package com.foreknow.demo09;

import java.util.Scanner;

/**
 * 游戏类
 * 1.创建一个游戏类
 * 2.编写游戏类的初始化的方法 initial()
 * 3.编写游戏类的开始游戏方法 startGame()
 *
 * 实现一局对战
 * 分别调用用户类和电脑类中的出拳的方法showFirst(),接收返回值进行比较，给出胜负的结果
 *
 * 如何实现循环对战并累计得分
 */
public class Game {
  Person person; //用户类
  Computer computer;//电脑类
  int count;//对战的次数

  //  public Game() {
  //    person = new Person();
  //    computer = new Computer();
  //    count = 0;
  //  }

  /**
   * 初始化属性
   */
  public void initial() {
        person = new Person();
        computer = new Computer();
        count = 0;
  }

  public void startGame() {
    initial();//调用初始化的方法
    System.out.println("------------欢迎进入游戏-----------------");
    System.out.println("----------------猜拳开始----------------");
    System.out.println("--------------------------------------");
    System.out.println("出拳的规则:1.剪刀   2.石头  3.布");
    System.out.println("请选择对方的角色(1.刘备   2.孙权   3.曹操):");
    Scanner input= new Scanner(System.in);
    int role = input.nextInt();
    if(role==1){
      computer.name = "刘备";
    }else if(role==2){
      computer.name = "孙权";
    }else if(role==3){
      computer.name = "曹操";
    }
    System.out.println("你选择了"+computer.name+"对战");

    //开始游戏
    System.out.println("要开始吗？(y/n)");
    String con = input.next();
    int perFirst; //用户出拳
    int compFirst; //电脑出拳

    while(con.equals("y")) {
      perFirst = person.showFirst();
      compFirst = computer.showFirst();
      //需要根据返回值判断胜负
      if((perFirst==1 && compFirst == 1)||(perFirst==2 && compFirst == 2)||(perFirst==3 && compFirst == 3)){
        System.out.println("结果:平局");
      }else if((perFirst==1 && compFirst == 3)||(perFirst==2 && compFirst == 1)||(perFirst==3 && compFirst == 2)){
        System.out.println("结果:你胜出了"); //用户胜
        person.score++;
      }else {
        System.out.println("结果：你输出，真笨！！！！！！"); //电脑胜
        computer.score++;
    }
      count++;
      System.out.println("是否开始下一轮(y/n):");
      con = input.next();
    }
    //显示结果
    showResult();
  }

  /**
   * 显示结果
   *
   */
  public void showResult() {
    System.out.println("------------------------------------");
    System.out.println(computer.name+" VS "+person.name);
    System.out.println("对战的次数 "+count);
    int result = calcResult();//调用计算结果的方法
    if(result==1){
      System.out.println("结果:打成平手");
    }else if(result==2) {
      System.out.println("结果:胜出");
    }else{
      System.out.println("结果:下次加油吧，哈哈");
    }
    System.out.println("-------------------------------------");
  }

  /**
   * 计算结果
   */
  public int calcResult() {
    if(person.score == computer.score){
      return 1;//平局
    }else if(person.score>computer.score) {
      return 2;//用户胜
    }else {
      return 3;//电脑胜
    }
  }


}
